iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
Cloud Native

擱淺中掙扎系列 第 18

<DAY18>Python的日誌記錄 X Logging的日誌等級

  • 分享至 

  • xImage
  •  

前幾篇提到了日誌級別,順便提供更詳細的等級模式

首先基本的等級
logging.critical:最高等級,用於記錄導致應用崩潰或無法繼續運行的致命錯誤,需要立即處理。
logging.error:用於記錄應用程序遇到的錯誤。這個級別用於指出應用程序的一些嚴重問題,但通常不會導致應用程序崩潰。
logging.warning:用於記錄警告消息,表示應用程序遇到了一些可能需要關注的情況,但不是致命的。
logging.info:用於記錄信息消息,這些消息可以提供應用程序運行時的重要信息,但不是錯誤或警告。
logging.debug:用於記錄調試消息,這些消息通常用於開發和調試階段,提供詳細的內部信息。

將等級區分能幫助:

識別問題:根據不同等級的日誌,您可以更容易地識別和定位問題,從而加速故障排除。
**
監視運行時行為:日誌等級允許您關注特定類型的事件,並隨時監視應用程序的運行狀態。**

提高性能:通過設置日誌等級,您可以靈活控制記錄的數量,從而減少對系統性能的影響。

範例

import logging

# 配置日誌記錄器
logging.basicConfig(filename='kafka_consumer.log', level=logging.DEBUG)

def kafka_consumer_example():
    try:
        # 假設這是您的Kafka消費者代碼
        # ...
        
        # 假設發生了一些錯誤,需要記錄
        raise Exception("Something went wrong")

    except Exception as e:
        # 使用不同的日誌等級記錄錯誤消息
        logging.error(f"An error occurred: {str(e)}")  # 僅記錄錯誤消息
        logging.warning("A warning occurred")          # 記錄警告消息
        logging.info("Informational message")           # 記錄信息消息
        logging.debug("Debugging message")              # 記錄調試消息

if __name__ == "__main__":
    kafka_consumer_example()

你還可以自訂義等級

import logging

# 1. 定義自定義日誌等級的數值
MY_LOG_LEVEL = 25

# 2. 添加自定義日誌等級名稱
logging.addLevelName(MY_LOG_LEVEL, "MY_LEVEL")

# 3. 創建自定義的日誌處理程序和過濾器
class MyHandler(logging.Handler):
    def emit(self, record):
        log_entry = self.format(record)
        print(f"My log entry: {log_entry}")

class MyFilter(logging.Filter):
    def filter(self, record):
        return record.levelno == MY_LOG_LEVEL

# 配置日誌記錄器
logger = logging.getLogger("custom_logger")
logger.setLevel(logging.DEBUG)

# 創建一個自定義的日誌過濾器
my_filter = MyFilter()

# 創建一個自定義的日誌處理程序
my_handler = MyHandler()

# 將自定義過濾器添加到自定義的日誌處理程序
my_handler.addFilter(my_filter)

# 添加自定義的日誌處理程序到記錄器
logger.addHandler(my_handler)

def main():
    logger.log(MY_LOG_LEVEL, "This is a custom log message")

if __name__ == "__main__":
    main()

https://ithelp.ithome.com.tw/upload/images/20231004/20151014eddNVNLR0V.png


上一篇
<DAY17>使用 Mosquitto MQTT 取得客戶端 IP X 日誌log
下一篇
<DAY19>MarinDB X Linux安裝到啟動
系列文
擱淺中掙扎29
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言